package com.abcode.test.springbootmybatisplus.gen.vo;

import com.abcode.test.springbootmybatisplus.gen.entity.UserDetailsInfo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 德州扑克用户详细信息表(UserDetailsInfo)前端显示类
 *
 * @author abcode
 * @since 2025-06-27 23:27:19
 */
@Schema(description = "德州扑克用户详细信息表返回实体")
@NoArgsConstructor
@Data
public class UserDetailsInfoVO {

    /**
     * 外键
     */
    @Schema(title = "外键")
    private Integer userId;

    @Schema(title = "${column.comment}")
    private String nikeName;

    /**
     * 旧的名字
     */
    @Schema(title = "旧的名字")
    private String oldNikeName;

    /**
     * 头像
     */
    @Schema(title = "头像")
    private String head;

    /**
     * 性别（0男1女）
     */
    @Schema(title = "性别（0男1女）")
    private Integer sex;

    /**
     * 筹码
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(title = "筹码")
    private Long chip;

    /**
     * 胜局
     */
    @Schema(title = "胜局")
    private Integer win;

    /**
     * 负局
     */
    @Schema(title = "负局")
    private Integer lose;

    /**
     * 最大手牌
     */
    @Schema(title = "最大手牌")
    private String nutHand;

    /**
     * 最高拥有筹码
     */
    @Schema(title = "最高拥有筹码")
    private Integer highestHave;

    /**
     * 最大手牌类型1-10
     */
    @Schema(title = "最大手牌类型1-10")
    private Integer nutHandType;

    /**
     * 最大赢取
     */
    @Schema(title = "最大赢取")
    private Integer maxWin;

    /**
     * 用户每天可以免费领取两次筹码
     */
    @Schema(title = "用户每天可以免费领取两次筹码")
    private Integer freeGet;

    /**
     * 游戏场积分
     */
    @Schema(title = "游戏场积分")
    private Integer gameIntegral;

    /**
     * 比赛场积分
     */
    @Schema(title = "比赛场积分")
    private Integer matchIntegral;

    /**
     * 周积分
     */
    @Schema(title = "周积分")
    private Integer weeksIntegral;

    /**
     * 月积分
     */
    @Schema(title = "月积分")
    private Integer monthIntegral;

    /**
     * 0普通用户，>0 为机器人
     */
    @Schema(title = "0普通用户，>0 为机器人")
    private Integer roomPersionType;

    /**
     * 1 一号服务器 2二号服务器类推
     */
    @Schema(title = "1 一号服务器 2二号服务器类推")
    private Integer roomId;

    /**
     * 机器人I豆
     */
    @Schema(title = "机器人I豆")
    private Integer idou;

    /**
     * 当天累计玩了几局
     */
    @Schema(title = "当天累计玩了几局")
    private Integer addUpCount;

    /**
     * 当天累计玩了多长时间
     */
    @Schema(title = "当天累计玩了多长时间")
    private Integer addUpTime;

    /**
     * 当天累计赢的次数
     */
    @Schema(title = "当天累计赢的次数")
    private Integer winningCount;

    /**
     * 入池数
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(title = "入池数")
    private Long poolCnt;

    /**
     * 入池并赢牌数
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(title = "入池并赢牌数")
    private Long poolWinCnt;

    /**
     * 总手数
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(title = "总手数")
    private Long handCnt;

    /**
     * 总局数
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(title = "总局数")
    private Long gameCnt;

    /**
     * 0,正式用户，1游客用户
     */
    @Schema(title = "0,正式用户，1游客用户")
    private Integer userType;

    /**
     * 上一次用户读取到的新消息ID
     */
    @Schema(title = "上一次用户读取到的新消息ID")
    private Integer upMsgId;

    /**
     * 最大7次 联系登录次数
     */
    @Schema(title = "最大7次 联系登录次数")
    private Integer dayIndex;

    /**
     * 当天第一次登录的时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(title = "当天第一次登录的时间")
    private LocalDateTime dayLoginDate;

    /**
     * 生日
     */
    @Schema(title = "生日")
    private LocalDate birthday;

    /**
     * 个性签名
     */
    @Schema(title = "个性签名")
    private String personSign;

    /**
     * 累计修改昵称次数
     */
    @Schema(title = "累计修改昵称次数")
    private Integer modifyNameTimes;

    /**
     * 修改头像次数
     */
    @Schema(title = "修改头像次数")
    private Integer modifyHeadTime;

    /**
     * 手机号
     */
    @Schema(title = "手机号")
    private String phone;

    /**
     * 国家
     */
    @Schema(title = "国家")
    private String country;

    /**
     * 城市
     */
    @Schema(title = "城市")
    private String city;

    /**
     * 省份
     */
    @Schema(title = "省份")
    private String province;

    /**
     * 收藏牌谱数
     */
    @Schema(title = "收藏牌谱数")
    private Integer spectrumCnt;

    /**
     * 大厅币
     */
    @Schema(title = "大厅币")
    private Integer coin;

    /**
     * å¯†ç 
     */
    @Schema(title = "å¯†ç ")
    private String password;

    @Schema(title = "${column.comment}")
    private Integer payPwdErrorTime;

    @Schema(title = "${column.comment}")
    private String payPassword;

    @Schema(title = "${column.comment}")
    private Integer payPwdStatus;

    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(title = "${column.comment}")
    private Long payPwdLockTime;

    @Schema(title = "${column.comment}")
    private String picFrame;

    /**
     * 头像框过期时间
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(title = "头像框过期时间")
    private Long picEffectiveTime;

    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(title = "${column.comment}")
    private Long honorNum;

    @Schema(title = "${column.comment}")
    private Integer verifyCode;

    /**
     * éªŒè¯ç ç”Ÿæˆæ—¶é—´
     */
    @Schema(title = "éªŒè¯ç ç”Ÿæˆæ—¶é—´")
    private String sendCodeTime;

    /**
     * 随机id
     */
    @Schema(title = "随机id")
    private String randomNum;

    /**
     * 创建日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(title = "创建日期")
    private LocalDateTime ctime;

    /**
     * 有参构造函数
     *
     * @param entity
     */
    public UserDetailsInfoVO(UserDetailsInfo entity) {

        this.userId = entity.getUserId();
        this.nikeName = entity.getNikeName();
        this.oldNikeName = entity.getOldNikeName();
        this.head = entity.getHead();
        this.sex = entity.getSex();
        this.chip = entity.getChip();
        this.win = entity.getWin();
        this.lose = entity.getLose();
        this.nutHand = entity.getNutHand();
        this.highestHave = entity.getHighestHave();
        this.nutHandType = entity.getNutHandType();
        this.maxWin = entity.getMaxWin();
        this.freeGet = entity.getFreeGet();
        this.gameIntegral = entity.getGameIntegral();
        this.matchIntegral = entity.getMatchIntegral();
        this.weeksIntegral = entity.getWeeksIntegral();
        this.monthIntegral = entity.getMonthIntegral();
        this.roomPersionType = entity.getRoomPersionType();
        this.roomId = entity.getRoomId();
        this.idou = entity.getIdou();
        this.addUpCount = entity.getAddUpCount();
        this.addUpTime = entity.getAddUpTime();
        this.winningCount = entity.getWinningCount();
        this.poolCnt = entity.getPoolCnt();
        this.poolWinCnt = entity.getPoolWinCnt();
        this.handCnt = entity.getHandCnt();
        this.gameCnt = entity.getGameCnt();
        this.userType = entity.getUserType();
        this.upMsgId = entity.getUpMsgId();
        this.dayIndex = entity.getDayIndex();
        this.dayLoginDate = entity.getDayLoginDate();
        this.birthday = entity.getBirthday();
        this.personSign = entity.getPersonSign();
        this.modifyNameTimes = entity.getModifyNameTimes();
        this.modifyHeadTime = entity.getModifyHeadTime();
        this.phone = entity.getPhone();
        this.country = entity.getCountry();
        this.city = entity.getCity();
        this.province = entity.getProvince();
        this.spectrumCnt = entity.getSpectrumCnt();
        this.coin = entity.getCoin();
        this.password = entity.getPassword();
        this.payPwdErrorTime = entity.getPayPwdErrorTime();
        this.payPassword = entity.getPayPassword();
        this.payPwdStatus = entity.getPayPwdStatus();
        this.payPwdLockTime = entity.getPayPwdLockTime();
        this.picFrame = entity.getPicFrame();
        this.picEffectiveTime = entity.getPicEffectiveTime();
        this.honorNum = entity.getHonorNum();
        this.verifyCode = entity.getVerifyCode();
        this.sendCodeTime = entity.getSendCodeTime();
        this.randomNum = entity.getRandomNum();
        this.ctime = entity.getCtime();
    }


}
